
#if !defined (_MLVEC3_H)
#define _MLVEC3_H

#include "mlMath.h"

namespace ml
{

	class Vec2;

	class Vec3
	{
	public:
		
		float X, Y, Z;

		Vec3(void);
		Vec3(const Vec3 &);
		Vec3(const Vec2 &, float);
		Vec3(float, float, float);
		~Vec3(void);

		Vec3 &operator =(const Vec3 &);
		bool operator ==(const Vec3 &) const;
		bool operator !=(const Vec3 &) const;
		Vec3 operator -(void) const;
		Vec3 operator +(const Vec3 &) const;
		Vec3 operator -(const Vec3 &) const;
		Vec3 operator *(float) const;
		Vec3 operator /(float) const;
		Vec3 &operator +=(const Vec3 &);
		Vec3 &operator -=(const Vec3 &);
		Vec3 &operator *=(float);
		Vec3 &operator /=(float);
		float &operator [](int);
		float operator *(const Vec3 &) const;

		float * toFloatPtr(void);
		Vec2 toVec2(void);

		void normalize(void);
		void zero(void);

	protected:

	};

	Vec3 operator *(float, const Vec3 &);

}

#endif